home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / programr / xygraf.zip / GRAF.VEC < prev    next >
Text File  |  1995-03-02  |  9KB  |  232 lines

  1. shifts[20]; ' We suppose to use this array for shifts with bar grafs
  2.  
  3. xar[5];
  4. yar[5];
  5. dar[5];
  6. tar[6];
  7. for i = 1 to 5
  8.     xar[i] = i
  9.     yar[i] = i^2 - 10
  10.     dar[i] = i^2 / 2
  11.     tar[i] = lg(i) * 200                    ' Tick, Manual
  12. next
  13. tar[6] = lg(6) * 200
  14.  
  15. grafclip(30, 10, 200, 200)                  ' Set area on screen
  16.  
  17. 'Calc. scale (X - 0, Y = 1),
  18. 'First dataset (1) or not first (0), if first, all previous settings are
  19. 'ignored. Example: previous scale was -1 to 1, array elements have values in
  20. 'the range from -2 to 0. With first == 1, new scale will be from -2 to 2,
  21. 'and if first == 0 it will be from -2 to 1.
  22. 'Resize factor. If == 0 nothing happens. If < 0 every next call to this
  23. 'function resize scale to fit bar graf data. If > 0 - axe will be adjusted
  24. marker_size(8)     ' Do it before call to calc_scale in the case of bar graf
  25. calc_scale(xar, 0, 1, -1)
  26. calc_scale(dar, 1, 1, -1)                   ' y-scale, first, resize
  27. calc_scale(yar, 1, 0, -1)                   ' y-scale, not first, resize
  28. calc_scale(yar, 1, 0, 1)            ' and fit to nice-looking scale
  29.  
  30. color(12) : style(1, 3) : fill(1)
  31. 'which, text dir, tick no (-1 for auto), s_tick no<,tick_ar, s_tick_arr>
  32. 'if auto (tick_no == -1) then number of sub ticks = s_tick_no * tick no
  33. 'in this case tick_no will be 5, sub_tick_no 25
  34. 'Manual ticks setup for X:
  35. set_axe(1, 1, -1, 5, tar, tar, "One", "Two", "Three", "Four", "Five", "Six")
  36. 'Auto setup for Y:
  37. set_axe(2, 0, -1, 2)
  38. 'Axes numeration: HORIZ1 = 1, VERT1 = 2, HORIZ2 = 4, VERT2 = 8
  39. axes(14, 9, 1, 2, 3, 1, 1 + 2) 'axes color, legends color, grid style,
  40.            'grid color, axes width, ticks width, axes set (hor1 + vert1)
  41. color(14) : style(5, 11) : fill(1)
  42. cross()                                     ' Draw beginning of axes (0,0)
  43. PLOT(xar, dar, 4, 1, shifts)                ' Plot second dataset
  44. color(15) : style(6, 14)
  45. PLOT(xar, yar, 4, 1, shifts)                ' Plot second dataset
  46. marker_size(4)
  47. color(9) : style(1, 7)
  48. PLOT(xar, yar, 3, 1, shifts)                ' Plot data
  49. marker_size(8)
  50. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  51. for i = 1 to 20
  52.     shifts[i] = 0
  53. next
  54.  
  55. for i = 1 to 5
  56.     yar[i] = i^2 - 10
  57.     dar[i] = i^2 / 2 - 5
  58. next
  59.  
  60. ' In the next example we can use manual scale set, and do not fit with
  61. '   the second dataset.
  62.  
  63. grafclip(230, 20, 380, 210)                  ' Rectangle on screen
  64. 'grafscale(1, -10, 5, 15)     ' Manual set of scale, instead of calc_scale()
  65. calc_scale(xar, 0, 1, 0)
  66. calc_scale(dar, 1, 1, -1)                   ' y-scale, first, resize
  67. calc_scale(yar, 1, 0, -1)                   ' y-scale, not first, resize
  68. calc_scale(yar, 1, 0, 1)
  69. calc_scale(xar, 0, 0, 1)
  70.  
  71. set_axe(1, 0, -1, 2)
  72. set_axe(2, 0, -1, 2)
  73. set_axe(4, 0, -1, 5)
  74. set_axe(8, 0, -1, 2)
  75. 'Axes numeration: HORIZ1 = 1, VERT1 = 2, HORIZ2 = 4, VERT2 = 8
  76. axes(14, 12, 0, 7, 3, 1, 1 + 2 + 4 + 8) 'axes color, legends color, grid style,
  77.            'grid color, axes width, ticks width, axes set (hor1 + vert1)
  78. color(11) : style(1, 3)
  79. cross()                                     ' Draw beginning of axes (0,0)
  80. PLOT(xar, yar, 5, 1, shifts)                      ' Plot dataset
  81. color(8) : style(1, 2)
  82. PLOT(xar, dar, 5, 1, shifts)                      ' Plot second dataset
  83. for i = 1 to 20
  84.     shifts[i] = 0
  85. next
  86. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  87. rar[100];
  88. sar[100];
  89. for i = 1 to 100
  90.     rar[i] = i
  91.     sar[i] = sin(3.6 * i)
  92. next
  93. grafclip(420, 20, 600, 210)                  ' Clip rectangle on screen
  94. grafscale(0, -1, 100, 2)                 'Manual scale ajustment
  95. 'calc_scale(rar, 0, 0, 1)                 ' x-scale, not first, resize
  96. 'calc_scale(sar, 1, 0, 1)                 ' y-scale, not first, no resize
  97. 'calc_scale(sar, 1, 1, 1)                 ' and fit to nice-looking scale
  98. set_axe(1, 0, -1, 2)
  99. set_axe(2, 0, -1, 2)
  100. set_axe(4, 0, -1, 2)
  101. set_axe(8, 0, -1, 2)
  102. 'Axes numeration: HORIZ1 = 1, VERT1 = 2, HORIZ2 = 4, VERT2 = 8
  103. axes(14, 12, 3, 7, 3, 1, 1 + 2 + 4 + 8) 'axes color, legends color, grid style,
  104.            'grid color, axes width, ticks width, axes set (hor1 + vert1)
  105. cross()                                      ' (0, 0)
  106. color(10) : style(1, 2) : setline(3, 0)
  107. PLOT(rar, sar, 1, 1, shifts)                      ' Plot dataset
  108. for i = 1 to 20
  109.     shifts[i] = 0
  110. next
  111. setline(1, 1)
  112. ''''''''''''''''''''''''''''''''' Add small graph at the corner of big one
  113. '''''''''''''''''''''''''''''''''
  114. grafclip(510, 35, 595, 90)                  ' Clip rectangle on screen
  115. style(1, 0) : fill(1)
  116. rectangle(480, 20, 600, 120)
  117. calc_scale(rar, 0, 1, 0)                 ' x-scale, first, resize
  118. calc_scale(sar, 1, 1, 0)                 ' y-scale, first, no resize
  119. 'calc_scale(sar, 1, 0, 1)                 ' and fit to nice-looking scale
  120. set_axe(1, 1, -1, 0)
  121. set_axe(2, 0, -1, 0)
  122. 'set_axe(4, 1, -1, 0)
  123. 'set_axe(8, 0, -1, 0)
  124. 'Axes numeration: HORIZ1 = 1, VERT1 = 2, HORIZ2 = 4, VERT2 = 8
  125. axes(14, 12, 3, 7, 3, 1, 1 + 2) 'axes color, legends color, grid style,
  126.            'grid color, axes width, ticks width, axes set (hor1 + vert1)
  127. cross()                                      ' (0, 0)
  128. color(10) : style(1, 2) : setline(3, 0)
  129. PLOT(rar, sar, 1, 1, shifts)                      ' Plot dataset
  130. for i = 1 to 20
  131.     shifts[i] = 0
  132. next
  133.  
  134. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  135.  
  136. marker_size(16)
  137. zar[20];
  138. '                We set zar[] manually. The rules are:
  139. '                zar[4*i+1] keep ystart < 0;
  140. '         zar[4*i+2] keep ystart >= 0;
  141. '         zar[4*i+3] keep yend < 0;
  142. '         zar[4*i+4] keep yend >= 0;
  143. zar[1] = 0   : zar[2] = 0   : zar[3] = 0   : zar[4] = 10
  144. zar[5] = 0   : zar[6] = 0   : zar[7] = 0   : zar[8] = 24
  145. zar[9] = 0   : zar[10] = 0  : zar[11] = 0  : zar[12] = 15
  146. zar[13] = 0  : zar[14] = 0  : zar[15] = 0  : zar[16] = 10
  147. zar[17] = 0  : zar[18] = 0  : zar[19] = 0  : zar[20] = 5
  148.  
  149. aar[20];
  150.  
  151. aar[1] = 0    : aar[2] = 10   : aar[3] = 0    : aar[4] = 12
  152. aar[5] = 0    : aar[6] = 24   : aar[7] = 0    : aar[8] = 25
  153. aar[9] = 0    : aar[10] = 15  : aar[11] = 0   : aar[12] = 25
  154. aar[13] = 0   : aar[14] = 10  : aar[15] = 0   : aar[16] = 15
  155. aar[17] = 0   : aar[18] = 5   : aar[19] = 0   : aar[20] = 7
  156.  
  157. grafclip(20, 250, 240, 420)
  158. calc_scale(xar, 0, 1, 0)              ' x-scale, first, no resize
  159. calc_scale(zar, 1, 1, 0)              ' y-scale, first, resize
  160. calc_scale(aar, 1, 0, -1)               ' y-scale, not first, no resize
  161.                        ' That is not necessary to resize
  162. get_axes_dim(xmin, ymin, xmax, ymax)
  163. grafscale(xmin, ymin * 1.2, xmax, ymax * 1.2)
  164. calc_scale(xar, 0, 0, 1)
  165. set_axe(1, 0, -1, 5)
  166. set_axe(2, 0, -1, 2)
  167. set_axe(4, 0, -1, 5)
  168. set_axe(8, 0, -1, 2)
  169. 'Axes numeration: HORIZ1 = 1, VERT1 = 2, HORIZ2 = 4, VERT2 = 8
  170. axes(14, 12, 0, 7, 3, 1, 1 + 2 + 4 + 8) 'axes color, legends color, grid style,
  171.            'grid color, axes width, ticks width, axes set (hor1 + vert1)
  172. color(8) : style(1, 2)
  173. cross()                                   ' Stacked Graf twice
  174. PLOT(xar, zar, 6, 3)
  175. color(14) : style(1, 9)
  176. PLOT(xar, aar, 6, 3)
  177. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  178. ' Now we combine manual and automatic approaches: first two arrays are
  179. ' composed manually, third is added with call to get_stacked()
  180. '                zar[4*i+1] keep ystart < 0;
  181. '         zar[4*i+2] keep ystart >= 0;
  182. '         zar[4*i+3] keep yend < 0;
  183. '         zar[4*i+4] keep yend >= 0;
  184. grafclip(310, 250, 550, 450)
  185.  
  186. bar[20];
  187. bar[1] = 0     : bar[2] = 0     : bar[3] = -10   : bar[4] = 10
  188. bar[5] = 0     : bar[6] = 0     : bar[7] = -20   : bar[8] = 10
  189. bar[9] = 0     : bar[10] = 0    : bar[11] = 0    : bar[12] = 10
  190. bar[13] = 0    : bar[14] = 0    : bar[15] = 0    : bar[16] = 20
  191. bar[17] = 0    : bar[18] = 0    : bar[19] = 0    : bar[20] = 2
  192.  
  193. car[20];
  194. car[1] = -10  : car[2] = 10   : car[3] = -15  : car[4] = 20
  195. car[5] = -20  : car[6] = 10   : car[7] = -25  : car[8] = 15
  196. car[9] = 0    : car[10] = 10  : car[11] = 0   : car[12] = 17
  197. car[13] = 0   : car[14] = 20  : car[15] = 0   : car[16] = 22
  198. car[17] = 0   : car[18] = 2   : car[19] = 0   : car[20] = 12
  199.  
  200. color(9) : style(1, 1)
  201.  
  202. ear[20];
  203. for i = 1 to 20
  204.     ear[i] = car[i]
  205. next
  206. calc_scale(xar, 0, 1, 0)                  ' x-scale, first, no resize
  207. get_stacked(xar, ear)                     ' ear scale is enought
  208. calc_scale(ear, 1, 0, -1)                 ' y-scale, first, resize
  209. get_axes_dim(xmin, ymin, xmax, ymax)
  210. grafscale(xmin, ymin * 1.2, xmax, ymax * 1.2)
  211. calc_scale(xar, 0, 0, 1)
  212. calc_scale(ear, 1, 0, 1)
  213. set_axe(1, 0, -1, 5)
  214. set_axe(2, 0, -1, 2)
  215. set_axe(4, 0, -1, 5)
  216. set_axe(8, 0, -1, 2)
  217. 'Axes numeration: HORIZ1 = 1, VERT1 = 2, HORIZ2 = 4, VERT2 = 8
  218. axes(14, 12, 0, 7, 3, 1, 1 + 2 + 4 + 8) 'axes color, legends color, grid style,
  219.            'grid color, axes width, ticks width, axes set (hor1 + vert1)
  220. cross()
  221. color(9) : style(1, 1)
  222. PLOT(xar, bar, 6, 3)
  223.  
  224. color(11) : style(1, 6)
  225.  
  226. PLOT(xar, car, 6, 3)
  227.  
  228. color(10) : style(1, 12)
  229. PLOT(xar, ear, 6, 3)
  230.  
  231. END
  232.